package com.threeti.mecool.common.resource.util;

import java.io.File;
import java.io.IOException;

import org.apache.commons.lang.StringUtils;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;

public abstract class FileUtil {
	public static ResourceLoader getResourceLoader() {
		return new DefaultResourceLoader();
	}

	public static boolean exists(String uri) {
		Resource rs = getResourceLoader().getResource(uri);
		return rs.exists();
	}
	
	public static boolean isFile(String uri) {
		Resource rs = getResourceLoader().getResource(uri);
		return (rs.getFilename().indexOf(".") != -1);
	}
	
	/** 判断uri是否遵循标准的<b>file:</b>协议 */
	public static boolean isFileURLBased(String uri) {
		return "file:".equals(uri.substring(0, 5));
	}
	
	public static String getFileName(String uri) {
		if (StringUtils.isEmpty(uri)) return "";
		Resource rs = getResourceLoader().getResource(uri);
		return rs.getFilename();
	}
	
	/** 取得文件路径名 */
	public static String getFileDirectory(String uri) {
		if (StringUtils.isEmpty(uri)) return "";
		return uri.substring(0, uri.indexOf(getFileName(uri))-1);
	}
	
	/** 取得文件句柄 */
	public static File getFile(String uri) throws IOException {
		return FileUtil.getResourceLoader().getResource(uri).getFile();
	}
	
	/** 取得标准的文件URL路径 */
	public static String getFileURLPath(String uri) throws IOException {
		if (StringUtils.isEmpty(uri)) return "";
		Resource rs = getResourceLoader().getResource(uri);
		return rs.getURL().getPath();
	}

	//TODO jay:handle this
	public static String preHandleFilepath(String filepath) {
		return filepath.replaceAll(" ", "%20");
	}
}
